package com.ljx.annotation.annotation01;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author LJX
 * @Description: TODO
 * @Date: 2022/10/26 9:45
 * @Version 1.0
 */
public class Test01 {
	public static void main(String[] args) {

	}
}
// 自定义注解可以放在类上，方法上，属性上，还可以放在参数类型上
@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD,ElementType.ANNOTATION_TYPE,ElementType.CONSTRUCTOR,ElementType.LOCAL_VARIABLE,ElementType.PARAMETER})
// Retention设置此注解能在那些地方生效，RetentionPolicy.RUNTIME存在运行生效， RetentionPolicy.Class能存在字节码文件生效，RetentionPolicy.SOURCE存在在源码上有效
@Retention(RetentionPolicy.RUNTIME)
@interface lll{
	// 自定义注解的属性
	// 如果自定义注解中只有一个属性，并且这个属性名为value 则在使用此注解时可以省略属性名,多个属性要加属性名
	// 属性也可以设置默认值，这样在使用此注解时就不用再写上属性名=属性值了
	String value() default"" ;
	String  a() default "";
}

@lll()
class ll{
	@lll("bbb")
	int a;

	@lll("bbb")
	public static void l(@lll("hhh") int b){

	}
}